package yzy.ecps.service;

import java.util.List;

import yzy.ecps.model.BtcGoods;
import yzy.ecps.model.BtcGoodsClob;
import yzy.ecps.model.BtcParaValue;
import yzy.ecps.model.BtcSku;
import yzy.ecps.query.condition.GoodsQueryCondition;
import yzy.ecps.query.condition.PortalGoodsCondition;
import yzy.ecps.utils.PageInfo;

public interface GoodsService {
	
	/**
	 * 根据筛选条件查询商品分页数据
	 * @param gqc
	 * @return
	 */
	public PageInfo getPageInfo(GoodsQueryCondition gqc);
	
	/**
	 * 根据筛选条件查询符合条件商品的数量
	 * @param gqc
	 * @return
	 */
	public int getTotalCount(GoodsQueryCondition gqc);
	
	/**
	 * 保存一个商品及它所有相关连的其它信息
	 * @param goods 要保存的商品
	 * @param goodsClob 商品大字段数据 
	 * @param skus	商品关联的销售单元
	 * @param paraValues 商品的普通参数值
	 */
	public void saveGoods(BtcGoods goods,BtcGoodsClob goodsClob,List<BtcSku> skus,List<BtcParaValue> paraValues);
	
	/**
	 * 商品审核
	 * @param goodsId 被审核的商品ID
	 * @param auditStatus 审核结果的状态值 
	 * @param notes 审核意见
	 */
	public void auditGoods(Long goodsId,Integer auditStatus,String notes);
	
	/**
	 * 商品上下架操作
	 * @param goodsId 要操作的商品ID
	 * @param showStatus 上下架状态值
	 */
	public void showGoods(Long goodsId,Integer showStatus);
	
	/**
	 * 根据前台商品的品牌，价格范围，和参数值查询商品的分页数据
	 * @param pgc
	 * @return
	 */
	public PageInfo getPageForPortal(PortalGoodsCondition pgc);
	
	/**
	 * 获取指定商品的信息  包含商品销售单元信息，大字段数据信息，属性信息
	 * @param goodsId
	 * @return
	 */
	public BtcGoods getGoodsInfo(Long goodsId);
	
	/**
	 * 发布商品 (通过webservice在前台服务器生成对应的静态页面)
	 * @param goodsId
	 * @param pwd
	 */
	public String publishGoods(Long goodsId,String pwd)throws Exception;
}
